Customer relationship management system and method

ABSTRACT

A software-based customer relationship management system and method.

RELATED APPLICATION/PRIORITY CLAIM

This application claims priority under 35 U.S.C. 119(e) and 120 to U.S.Provisional Application Ser. No. 60/707,820 entitled “CustomerRelationship Management System and Method” filed on Aug. 12, 2005, theentirety of which is incorporated herein by reference.

FIELD OF THE INVENTION

The invention relates generally to a customer relationship managementsystem and method and in particular to a software-based system andmethod for providing customer relationship management.

BACKGROUND OF THE INVENTION

Customer relationship management (CRM) systems and solutions are wellknown. For example, typical known CRM systems include Microsoft® CRM,e-Synergy, a CRM product provided by SalesForce.com, Netsuite CRM, andSAP Business One CRM. However, conventional CRM systems have significantlimitations that include a lack of flexibility, high costs, and aclosed-source structure which is embedded into the traditional productofferings. These limitations have led to a failure rate of over 70% withtraditional CRM implementations. Thus, it is desirable to provide acustomer relationship management system and method that overcomes theselimitations of typical CRM systems and it is to this end that theinvention is directed.

SUMMARY OF THE INVENTION

The customer relationship management system has one or more combinationsof the templates and themes wherein the templates and themes are userinterface skins of the customer relationship management system whereinthe templates adjust the layout of the data and the themes adjust theuser interface of the display of the customer relationship managementsystem. Some of the templates/themes may be interactive user interfaceswherein there is some character or movement in a portion of the userinterface during the operation of the customer relationship managementsystem. Other templates/themes are different styled or colored userinterfaces.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram illustrating a customer relationship managementsystem in accordance with the invention that incorporates the variousfeatures of the invention;

FIG. 2 is a diagram illustrating an example of the user interface of thesystem in FIG. 1;

FIG. 3 is a diagram illustrating the customer relationship managementsystem with the query counter in accordance with the invention;

FIG. 4 is an example of a user interface of the administration module inaccordance with the invention that incorporates a module loader modulein accordance with the invention;

FIGS. 5A and 5B are an example of the manifest code for a module thatcan be loaded into the system using the module loader module;

FIG. 6 is a flowchart illustrating an upgrade process in accordance withthe invention;

FIG. 7 is an example of a user interface for configuring an offlineclient of the system shown in FIG. 1;

FIG. 8A-C illustrate several examples of an interactive template andtheme of the customer relationship management system; and

FIGS. 9A-M illustrate several examples of a template and theme of thecustomer relationship management system.

DETAILED DESCRIPTION OF A PREFERRED EMBODIMENT

The invention is particularly applicable to an open source customerrelationship management software system and it is in this context thatthe invention will be described. It will be appreciated, however, thatthe algorithms, data structures, processes and modules in accordancewith the invention has greater utility since these modules and inventiveaspects disclosed herein can be equally applied to other non-open sourceCRM systems, as well as other business software application systems aswell as other database software systems. For purposes of illustration,the described system is an implementation in a customer relationshipmanagement (CRM) and groupware system although the inventive methodsapply across multiple systems. In the example, the CRM and groupwaresystem is SugarCRM Inc.'s Sugar Professional 3.5. It is a databasedriven application that demands quick response time.

The system may be implemented in a preferred embodiment using a baseclass known as SugarBean, and a data retrieval API. The base class hasmethods for building list queries, saving, and retrieving individualitems. Each specific type of data creates a subclass of this base class.In a preferred embodiment of the invention, the base class is calledSugarBean. There is at least one subclass of SugarBean for each module.SugarBeans are used for creating database tables, cleaning out databasetables, loading records, loading lists, saving records, and maintainingrelationships. One example of a SugarBean subclass is Contact. Contactis a simple object that fills in some member variables on the SugarBeanand leverages SugarBean for much of its logic. Security for instance, isautomatically created for Contact. Another example of a SugarBeansubclass is Users which is a module that is security related and shouldnot have row level security applied to them. For this reason thesemodules have the bypass flag set to skip adding the right join forverifying security. The SugarCRM Sugar Professional system is a webbased system with many concurrent users. Since this program containscritical data to the users, it is imperative that they have quick accessto the system and their data. The most frequent activity in an SFAapplication is to look at existing data.

FIG. 1 is a diagram illustrating a customer relationship management(CRM) system 100 in accordance with the invention. In a preferredembodiment, the system 100 in accordance with the invention isimplemented as a software system that may preferable use open sourcecode. In the preferred embodiment, the elements shown in FIG. 1 are thusimplemented as a plurality of lines of computer code that may beexecuted by a processor of a computer system, such as a server computerwherein the various lines of computer code are stored in a memoryassociated with the computer system and the system interfaces with adatabase 110. The system may have one or more clients 102, such as abrowser application executed on a typical computing device (a browserclient session), that accesses the system over a computer network 103such as the Internet. The client 102 interactions go through a set ofone or more controllers 104. The controllers are the entry-point intothe system and take care of things like session tracking and sessionsecurity and end user authentication. The controllers also take care ofthe work to prepare the screen or the wrapper for the content anddetermine which module of the application the user is trying to accessand get the requested module to process the request. The system thus hasone or more modules 106 that are components of application functionalityand provide certain functionality. The modules 106 of the CRM system mayinclude, by way of example, a portal module, a calendar module, anactivities module, a contacts module, an accounts module, a leadsmodule, an opportunities module, a quotes module, a products module, acases module, a bug tracker module, a documents module, an emailsmodule, a campaigns module, a project module, an RSS module, a forecastsmodule, a reports module and a dashboard module. Each of these modulesprovides a different functionality to the system so that, for example,the calendar module provides a calendaring functionality to the CRMsystem that is instantiated with the system. The system may also includean administration module that handles the typical administrativefunctions of the system. Each module contains a subclass of a SugarBeanbase object 108 and each module references the SugarBean to retrieve thedata from the database 110 required for display.

FIG. 2 is a diagram illustrating an example of the user interface 120 ofthe system in FIG. 1. The user interface may include a home tab 121(that is selected in FIG. 2) that provides a general overview of Cases,Opportunities, Appointments, Leads, Tasks, Calendar, Team Notices, andPipeline. The home tab also includes shortcuts to enter most sorts ofdata, and a quick form for new contacts. The home tab also provides aquick overview of what customer tasks and activities you need to focuson today. The portal module (selected using a my portal tab 122),contains a series of shortcuts which can link to any web site you choosethat may include e-mail, forums, or any other web-based application,allowing the system to become a single user interface for multipleapplications. The calendar module may be selected by a calendar tab 124and allows the user to view scheduled activities (by day, week, month oryear), such as meetings, tasks, and calls. The system also allows theuser to share his/her calendar with coworkers which is a powerful toolfor coordinating the daily activities. The activities module is selectedusing an activities tab 126 and allows the user to create or updatescheduled activities, or to search for existing activities. By managingActivities within the context of an Account, Contact, Lead, Opportunity,or Case, the system allows the user to manage the myriad of calls,meetings, notes, emails and tasks that the user needs to track in orderto get the job done. The tasks are for tracking any action that needs tobe managed to completion by a due date, the notes allow the user tocapture note information as well as upload file attachments, the callsallow the user to track phone calls with leads and customers, meetingsare like calls, but also allow the user to track the location of themeeting and emails allow the user to archive sent or received emailmessages.

The contacts module is accessed by a contacts tab 128 and allows theuser to view a paginated contact list, or search for a contact. The usercan click on a specific contact to zoom in on the detailed contactrecord and, from a specific contact record, the user may link to therelated account, or leads, opportunities, cases, or direct reports(related contacts). Within the system, contacts are the people with whomthe organization does business. As with accounts, the system allows theuser to track a variety of contact information such as title, emailaddress, and other data. Contacts are usually linked to an Account,although this is not required. The accounts module may be accessed usingan accounts tab 130 and the user may view a paginated account list, orsearch for an account. The user can click on a specific account to zoomin on the detailed account record and, from a specific account record,the user may link to related contacts, activities, leads, opportunities,cases, or member organizations. Accounts are the companies with whichthe organization does business and the system allows the user to track avariety of information about an account including website, main address,number of employees and other data. Business subsidiaries can be linkedto parent businesses in order to show relationships between accounts.

The leads module may be accessed by a leads tab 132 that permits theuser to view a paginated list of leads, or search for a specific lead.The user can click on an individual lead to zoom in on the leadinformation record and, from that detailed lead record, the user canlink to all related activities, and see the activity history for thelead. Leads are the people or companies with whom the organization mightdo business in the future. Designed to track that first point ofinteraction with a potential customer, leads are usually the hand offbetween the marketing department and the sales department. Not to beconfused with a contact or account, leads can often contain incompleteor inaccurate information whereas contacts and accounts stored in SugarProfessional are core to many business processes that require accuratedata. Leads are typically fed into the Sugar Professional systemautomatically from your website, trade show lists or other methods.However, the user can also directly enter leads into Sugar Professionalmanually.

The opportunities module is accessed by an opportunities tab 134 andpermits the user to view a paginated list of opportunities, or searchfor a specific opportunity. The user can click on an individualopportunity to zoom in on the opportunity information record and, fromthat detailed opportunity record, the user can link to all relatedactivities, see the activity history for the opportunity, and link torelated leads and contacts. Opportunities track the process of selling agood or service to a potential customer. Once a selling process hascommenced with a lead, a lead should be converted into a contact andpossibly also an account. Opportunities help the user manage the sellingprocess by tracking attributes such as sales stages, probability ofclose, deal amount and other information. The quotes module may beaccessed by a quotes tab 136 and permits the user to view a paginatedlist of customer quotes, or search for a specific quote. The user canclick on an individual quote to zoom in on the detailed quoteinformation. A quote is formed by referencing product and pricing from acatalog of products you may create. A presentation quality PortableDocument Format (PDF) representation of the quote may be created to faxor email to a client. Quotes may be associated with Accounts, Contacts,or Opportunities.

The products module may be accessed by a products tab 138 and permitsthe user to view a paginated list of products, or search for a specificproduct. The user can click on an individual product to zoom in on thedetailed product information. A product is used when assembling acustomer quote. The cases module may be accessed using a cases tab 140and may permit the user to view a paginated list of cases, or search fora specific case. The user can click on an individual case to zoom in onthe case information record and, from that detailed case record, theuser can link to all related activities, see the activity history forthe case, and link to related contacts. The cases are the handoffbetween the sales department and the customer support department andhelp customer support representatives manage support problems orinquiries to completion by tracking information for each case such asits status and priority, the user assigned, as well as a full trail ofall related open and completed activities. The bug tracker module may beaccessed using a bug tracker tab 142 and permits the user to view apaginated list of reported software bugs. The user can click on anindividual bug to zoom in on the detailed bug report and, from thatdetailed bug report, the user can link to all related activities, seethe activity history for the bug, and link to related Contacts,Accounts, and Cases. The tracking software bugs is an important functionof a customer support department. The Bug Tracker module helps customersupport representatives manage software-related support problems orinquiries to completion by tracking information for each bug such as itsstatus and priority, its resolution, the user assigned, the release ofsoftware involved, its type (defect or feature) as well as a full trailof all related open and completed activities.

The documents module may show the user a list of documents that the usercan download. The user can also upload documents, assign publish andexpiration dates, and specify which users can access them. The emailmodule allows the user to write and send emails and to create EmailTemplates that can be used with email-based marketing campaigns. Theuser can also save drafts and archive emails. The campaigns module helpsthe user implement and track marketing campaigns wherein the campaignsmay be telemarketing, mail or email based. For each Campaign, the usercan create the Prospects list from the Contacts or Leads or outside filesources. The projects module helps the user manage tasks related tospecific projects. Tasks can be assigned to different users and assignedestimated hours of effort and, as tasks are in progress and completed,users can update the information for each task. The RSS module permitsthe user to view the latest headlines provided by your favorite RDF SiteSummary (RSS) feeds. These feeds provide news or other web content thatis distributed or syndicated by web sites which publish their content inthis manner. The system has hundreds of RSS feeds available as supplied,and others may easily be added.

The forecasts module shows the user his/her committed forecast historyand current opportunities. For managers, the user can view your team'srolled up forecasts. The reports module shows the user a list of savedcustom reports not yet published, as well as a list of PublishedReports. Saved reports may be viewed, deleted or published, andpublished reports may be viewed, deleted or un-published. Clicking onthe name of a report zooms to the detailed definition of the reportcriteria (fields to be displayed, and filter settings) for that report,permitting the user to alter the criteria, and re-submit the reportquery. Finally, the dashboard module displays a graphical dashboard ofthe user's Opportunity Pipeline by Sales Stage, Opportunities by LeadSource by Outcome, Pipeline by Month by Outcome, and Opportunities byLead Source.

Returning to FIG. 1, the system also includes the database 110 thatcontains the data of the system and a security module 112 thatimplements the security methods to control access to the data in thedatabase 110. The system may also include a database abstraction layer114 that is coupled between the database 110 and the SugarBean object108 in order to by an interface between the database 110 and theSugarBean object 108. The SugarBean object 108 provides the base logicrequired for retrieving and making available information from thedatabase and each module creates subclasses of SugarBean to providemodule specific details. During the process of retrieving data from thedatabase, the SugarBean 108 makes calls that populate the row levelsecurity information into the SQL that retrieves the data.

Once the data is retrieved from the SugarBean object 108, the moduleuses a template mechanism 118 and a theme 116 to produce the requestedpresentation for the user. The template mechanism reformats the datafrom the database 110 into a particular form while the theme adjusts theuser interface according to the user's preferences. If, for instance,the user requests an HTML presentation of the detail view of the contactmodule for a specified contact, here is the flow of what happens. Theuser hits the controller named index.php. It handles most of the logicfor the main application. The index controller loads the current user,verifies authentication and session information, loads the language forthe user and produces some of the UI shell. It then calls the contactmodule and request the detail view for the specified contact. Thecontact module retrieves the SugarBean for the requested contact. TheSugarBean verifies row level security at this point. If the record isnot retrieved successfully, then the process aborts and the user is notallowed to view the data for the record. If the retrieve succeeds thenit uses the XTemplate mechanism and the code for the current user'stheme to create the UI for presentation. The resulting UI is sent backto the client that requested it.

FIG. 3 is a diagram illustrating the customer relationship managementsystem 100 with the query counter in accordance with the invention. Asshown, a query counter module 150 is coupled to the controllers 104 andthe database abstraction layer 114. The query counter module, that maybe preferably implemented as a piece of software code having a pluralityof lines of computer code resident on the server computer that isexecuted by the processor of the server computer, determines the numberof database queries on each page of the application during developmentto try and demonstrate and diagnose performance issues. In more detail,the module determines, for each page on the screen, the query counts persection of the screen and for the screen as a whole. The module alsoprovides the user with the ability to show all of the queries next tothe portion of the screen that the query was executed to populate whichallows developers to quickly isolate the source of queries and alsogives them a quick numeric value to judge changes against during thedevelopment.

FIG. 4 is an example of a user interface 160 of the administrationmodule in accordance with the invention that incorporates a moduleloader module in accordance with the invention. The administrationmodule permits an administrator of the system to perform variousadministrative functions including configuring of the system. Theadministrator module may include a module loader module that may beselected by a module loader tab 162. The loader module allows the easyend user administration of adding and removing components from theapplication. These components that may be added/removed from anapplication that is run on the system may include language packs,upgrades, new modules, and themes. The module can basically be used tomake any changes to the sugar code-base that you would want. As shown,in the administration user interface, there is a screen to upload newmodules. Once a module is uploaded, it, along with details about it, islisted as available for installation. If you click install, it isinstalled and then moved into the installed modules list and isavailable for un-installation. Internally, it handles all of the filemanagement, metadata changes, SQL, and allows for arbitrary PHP codeexecution.

In accordance with the invention, the module loading may be implementedusing a manifest file 170, an example of which is shown in FIGS. 5A and5B. The manifest file format is used to enable loading Modules, Patches,Themes, and Language Packs, to the Sugar server/system. In the exampleshown in FIGS. 5A and 5B, a zip file for the “Songs” module is providedthat is an example for creating your own Sugar loadable modules. Themanifest file format is used for the module loader as well as an upgradewizard as described below in more detail.

The manifest file format is shown in the sample module “Songs” as anexample to see how files should be formatted and how the loadingmechanism and manifest file works. The manifest file may include an“Acceptable_sugar_versions” variable that contains the version of thesugar server that must be present to load this module. The format of theversion dependency check can be provided as an exact match, or as aregex comparison. The manifest file may also include an“Acceptable_sugar_flavors” variable that specifies the flavor of sugarserver which currently include Open Source, Professional, and Enterpriseflavors. If there are elements or dependencies on functionality in aspecific flavor this parameter should be used to specify what isrequired. If there are no restrictions or limitations, the variable mayspecify all of the supported sugar flavors.

The manifest file may also include a “Name” variable that contains auser readable name for the module that this name will be displayed inthe Sugar Admin interface when loading and installing the module. Themanifest file may also include a “Description” variable that contains adescription of the module that is displayed in the Sugar Admininterface, an “Author” variable that contains the name of the person orcompany that authored the module, a “Published Date” variable thatcontains the date the module was published or last revised and a“Version” module that contains the version that the module. The manifestfile may also contain a “Type” variable that contains the type ofpackage that is contained in the zip file. Currently the module loaderonly supports “Modules”, and the upgrade Wizard provides support forlanguage packs, themes, patches, and a full upgrade. The manifest filemay also include an “Icon” variable that contains the relative path andname of the icon file in the zip file the Sugar Loader should use todisplay in the Sugar Admin interface for this module. The system willuse default icons if this is left blank. Finally, the manifest file mayalso contain a “Copy_files” variable that is an array of file copyinstructions that specify the From & To source and destination forfolders and files. The processing just walks through this tree movingthe files as specified, folders are copied recursively.

The system in accordance with the invention also has a novel upgradeprocess that is implemented from a tab 164 that launches an upgradewizard module from the administrator user interface shown in FIG. 4. Theupgrade wizard module is preferably a software module executing on theserver that performs the upgrade process that includes change detectionand system verification as will now be described.

FIG. 6 is a flowchart illustrating an upgrade process 180 in accordancewith the invention. During an upgrade/update in accordance with theinvention, change detection occurs that compares changes in the priorversion of the code to the upgraded version. In a typical open sourceprogram, the program has the users unzip the upgrade over their currentinstallation so that the user may loose any customizations that they mayhave made to the open source product. Thus, in step 182, the upgradeprocess starts by putting the file into a staging folder. Then, in step184, an upgrade script is called that performs some checks on theupgrade file prior to beginning the upgrade process. In step 186, theupgrade script ensures that the system that it is upgrading is one ofthe known systems that it should be able to upgrade from. If the systemis known, then in step 188, the upgrade script determines the upgradesteps that are needed from the specific installed version on the systemsince one upgrade package could support multiple prior versions and eachversion may have a slightly different series of upgrade steps. Thismakes the upgrade process much faster and easier than requiring the userto step through each version in sequence.

Now, in step 190, the upgrade is ready to install as the checks havebeen performed. In step 192, the upgrade process determines if there aremore files in the upgrade that need to be compared. This loop ensuresthat all of the files contained in the upgrade are compared and handledappropriately. Thus, during the installation process, the upgrade systemlooks at all of the files on the system that is being upgraded. In step194, the system calculates a checksum, that may preferably be an MD5checksum, for a file in the upgrade. In step 196, the system determinesif the checksum value is one of the known values from previous builds(with either Unix or dos line feeds) or matches a shipped version. Ifthe sum is known, then the file is considered safe to replace since nocustomizations will be lost during replacement and the method loops backto step 192 to compare the checksum of the next file. If the checksum isnot known, the file is added in step 198 to a list of files that will bechecked by the user. Any file that is not part of that list isautomatically replaced once the method is completed. The method thenloops back to step 192 to compare the checksum of the next file. Whenall of the files in the upgrade have been checked, the method proceedsto step 200 in which the list of files whose checksums are not known ispresented to the user so that the user can select the files from thelist to be replaced during the upgrade. In step 202, the replacement ofthe original files with the files of the upgrade occurs. In this step,the files whose checksums were known as well as the files selected bythe user from the list are replaced. Then, in step 204, another scriptis run to perform any further processing on the upgrade. In this manner,the upgrade of the application is handled without losing anycustomizations made by the user.

FIG. 7 is an example of a user interface 210 for configuring an offlineclient of the system shown in FIG. 1. This user interface permits thesystem to configure the system and server to provide a connection to amobile client. When this is done, the mobile client becomes a miniatureversion of the application and it will automatically sync all data thatthe specified username/password has, and also sync the applicationchanges as well. The application code changes are synced in a per filebasis, only files that are not the same between the client and theserver are synced and all code syncs are one way in that they only gofrom the server to the client. Any metadata and schema changes aresynced the same way. Any changes to the code, metadata, configuration,schema on the server are automatically synced to the client. Thesechanges are also synced as deltas and there is no full sync after thefirst time.

Application data changes are synced bi-directionally and change on theclient and the server are merged. This bidirectional synchronizationupdates both the client and the server with the latest changes from theother machine and handles conflict resolution. During thesynchronization, the user gets a user interface that shows them theprogress of the synchronization process.

The mobile client synchronization may also include a security feature.In particular, since the system software is developed in PHP and mostPHP programs are plain text, the code is somewhat easy to steal. Todeter that activity, an encoded/encrypted version of the source isproduced before copying it to mobile clients. The process for MobileSync with Code Encryption would be to take the current code from theserver, encrypt it completely into a binary executable form, and thensend the encrypted application down to the mobile client. This allowsfor mobile client functionality, easy change and administration on theserver (since it is still unencrypted on the server), and makes it veryhard for mobile client users to modify or steal the source code of theapplication. This increases the integrity of the system on a globalscale.

The mobile client in accordance with the invention may support a subsetof the total number of modules available on the server. Currently theHome, Calendar, Accounts, Contacts, Leads, Opportunities, Quotes,Products, Forecasts, and Documents are supported. With the exception ofthe Document all data a user has access to (i.e., can see), is synced totheir client. The Documents module will always sync the list ofdocuments (i.e., titles) the user has access to, but not the actualfiles. To get specific files synced to the client a user must select theindividual files they wish to have kept current on their client. This isdone by accessing the list of Documents when disconnected and setting aflag on each document you want synced to your client. Once the flag isset for a document, new versions of the document (the actual file) willautomatically be synced to the client on future sync operations. This isdone as syncing all documents could potentially take a very long time. Amobile client does not send email or log audit operations. Theseoperations are deferred and operated on by the server as records aresynchronized.

In order to be an offline/mobile client, the system operating the mobileclient must have the WAMP/LAMP stack installed prior to installing theSugar Enterprise software. There is just one version of the SugarEnterprise software once it is installed there are setup steps thatconfigure it to work as an offline client. This insures the applicationworks and looks the same when the user works connected to the server ordisconnected via the offline client. On the server/system side, anadministrator must create a valid login and password for the server forthe mobile client. Now, the installation of the mobile client will bedescribed. The steps include:

-   -   1. Install the WAMP/LAMP stack, just like you normally would for        a Sugar server.    -   2. Install the Enterprise version of Sugar, creating a user and        the database, but do not populate seed data.    -   3. Logon to the client system as admin.    -   4. Go to the Admin screen, select the “Repair” section then        select “Convert to Offline Client”. The following screen will        appear.    -   5. Specify the Sugar Servers URL. For example,        http://localhost/sugar35    -   6. Specify the login and password the user of this client        normally uses when connecting to the server (e.g., will, will).    -   7. Press the submit button, you will get a confirmation screen        press the OK button to continue, or Cancel to exit the        conversion steps. The conversion normally takes a minute or two.        -   a. The sync processing initially verifies and copies over            any application files modified or customized on the Sugar            server. This insures that the client systems are            automatically receive any modifications made to the server.        -   b. Once the application files are synced the records            accessible to the user are synced.    -   8. The screen should come back and say it was converted to an        offline client.    -   9. At this time log out of the client install (you're still        Admin), and login as the user that will have the client.    -   10. To insure everything is working correctly and to do the        initial sync for the user. The Sync link is located near the        Logout link. Select “Start Sync” The sync pop-up will appear and        allow you to select the sync mode. Select “Prompt”, and begin        the sync operation. Sync processing should begin, and the        progress bars will show how far in the process you are. The        initial sync will take longer than normal daily sync operations        as there is more data to move from the server to the client.    -   11. When the sync process is done it will indicate this in the        pop-up.        -   a. If any errors are encountered in the sync process they            are logged in the sync.log file in the clients root            directory. For example, C:/Program            Files/Apache/htdocs/sugar35c/sync.log.        -   b. The log can also be viewed via the sync pop-up by            selecting the “details” link.

The system in accordance with the invention may also include a mechanismfor tagging source code to use one code base for multiple productswherein comments are added to the files, the code, or the directories ofthe application. The tags are comments in the various languages that areused in the product. (e.g. end of line in php ‘//’ or html comments.) Inthis way, the default checked in version of the product is fullyfunctional and does not require a build. This massively speeds updevelopment.

The directory level tags can be used to remove directories from specificbuilds or only include them in specific builds. For instance if there isa module that is in our professional and enterprise builds only and isnot in our open source product, the system may put a file in the folderof that module that tells the build process to remove the entire folderif it is not doing a professional or enterprise build. The file leveltags can be used to remove entire files from specific builds or onlyinclude them in specific builds similar to the directory level tagsexample above except used for a particular file.

The code level tags can be used to remove sections of code specificbuilds or only include them in specific builds similar to the directorylevel tags example above except used for a piece of code. For the codelevel tags, a start tag can be placed before the code that we want toexclude and an end tag after the code. When the build process gets tocode level tags, if the code in question is not appropriate for thecurrent build, the tags and the code are stripped out of the sourcecode. When the tags and the code are removed from the build, blank linesare put back in place to make the lines match up between all versions ofthe application. This is important for debugging since most errormessages mention a line number. When debugging a problem, the developerdoes not typically have to have a specific build. As long as the code inquestion is in their particular build, the line number will be correct.

The system may also include PHP session security enhancements inaccordance with the invention. PHP is a server side scripting languagethat is well known. To enhance PHP session security, the system may usean Application GUID and IP Address tracking. PHP sessions are tied to aspecific server or specific server cluster, but they do not have anyrestrictions to a specific application or web folder on that server.This means that a user that is allowed to create a session in one PHPapplication on a server can hop that session over to another PHPapplication on the same server. Thus, the system uses an application ID.The application ID is a GUID that is randomly generated during theinstall (or end user specified during the install) that will be used toverify that the session the user is attempting to use with ourapplication is a valid session for this particular application. Withoutthis ID, the system and all of its contents are only as secure as theleast secure PHP application that has been installed.

The other security change is the tracking of the IP Address that theuser is using the application from during the session. If another usertries to use the application from a completely different IP address,this is detected, the user is denied, and the session is destroyedbecause it is considered compromised. The default behavior is to let allIP addresses with the same first three octets in their IP addresses(e.g. 192.168.1.xxx where xxx can be any numbers) will be considered thesame IP. This allows for load balancing of outbound traffic withouttripping the security mechanism. However, the system may also beconfigured to be more strict.

The system also provides calendar synchronization between the system andOutlook. Thus, the system has an interface and API with Outlook so thatthe free/busy indication in an Outlook calendar may be merged into themeetings stored in the system. In more detail, the system will acceptand respond to Outlook free/busy API calls. When the user configures anOutlook free/busy server, it will post all of the times in which you arescheduled to be in a meeting over the next 2 months to the server. Itwill also check to see when other people are available when you arescheduling a meeting using the same free/busy server. In addition tostoring and repeating the free/busy information for users that aresubscribed, the system goes a little bit deeper. In particular, when thefree/busy information for a user is requested, we produce a single listof all the busy blocks of time from both the outlook data from that user(if available) and the meetings recorded in the system. This provides asingle combined list of busy times to Outlook when people are trying toschedule meetings. In addition, when looking at the calendar in thesystem you will see the combined list of busy blocks for your systemmeetings and the meetings you have scheduled in Outlook. When schedulinga meeting with other people, you will also get the system and Outlookmeetings for each invited user.

The system may further include a business card screen that provides theuser of the system with a quick entry form for creating items frombusiness cards. The business card screen allows users to quickly enterthe information contained on a common business card and also createfollow up items and additional notes at the same time. This singlescreen allows for the quick entry of an entire contact, account,opportunity, notes, tasks, calls, meetings, . . . in one round trip tothe server. This not only presents the information is a user friendlyformat, it also saves the user a lot of time.

FIG. 8A-C illustrate several examples of an interactive template andtheme of the customer relationship management system. FIG. 8Aillustrates a paradise template and theme 300 that includes, in an upperportion 301 of the user interface, an ocean 302 with an island 304 inthe middle of the user interface. In this template/theme, a boat 306moves across the upper portion 301 of the user interface as a screensaver while the user interface is shown to the user during idle times sothat the theme/template is interactive. FIG. 8B illustrates a shredtemplate and theme 310 with the upper portion 301 of the user interfacehaving a mountain background and a skier 312 wherein one or moresnowflakes 314 drift down the user interface as a screen saver while theuser views the user interface during idle periods. FIG. 8C illustratesan eighty's template and theme 320 wherein an alien character 322 dropsdown the user interface as a screen saver while the user is viewing theuser interface during idle periods. In addition to these live actiontemplates/themes, the interactive template and themes may incorporate agame or other hidden or interactive content into the user interface. Thetemplates and themes shown in FIGS. 8A-8C, these user interfaces can beused with various other business software applications and othersystems.

FIGS. 9A-M illustrate several examples of a template and theme of thecustomer relationship management system. These templates may or may notbe interactive, but change the look and feel of the user interface ofthe system. For example, FIG. 9A illustrates an Awesome 80's theme andtemplate, FIG. 9B illustrates a Final Frontier theme and template, FIG.9C illustrates a Golden Gate theme and template, FIG. 9D illustrates aLinks theme and template, FIG. 9E illustrates a Love theme and template,FIG. 9F illustrates a Pipeline theme and template, FIG. 9G illustrates aRetro theme and template, FIG. 9H illustrates a Ripcurl theme andtemplate, FIG. 91 illustrates a Sugar theme and template, FIG. 9Jillustrates a Sugar Classic theme and template, FIG. 9K illustrates aSugar Lite theme and template, FIG. 9L illustrates a Sunset theme andtemplate and FIG. 9M illustrates a White Sands theme and template. Thetemplates and themes shown in FIGS. 9A-9M, these user interfaces can beused with various other business software applications and othersystems.

While the foregoing has been with reference to a particular embodimentof the invention, it will be appreciated by those skilled in the artthat changes in this embodiment may be made without departing from theprinciples and spirit of the invention, the scope of which is defined bythe appended claims.

1. A processing unit-based system, comprising: a processing unit basedsystem having a business software application executed on the processingunit based system, the business software application having a userinterface associated with a business software application; and one ormore themes associated with the user interface of the business softwareapplication wherein each theme generates a particular user interface ofthe business software application selected by a user using the businesssoftware application.
 2. The system of claim 1, wherein the one or morethemes further comprises an interactive theme with a moving portion ofthe user interface.
 3. The system of claim 2, wherein the moving portionof the interactive theme further comprises one of a moving boat, fallingsnowflakes and moving aliens.
 4. The system of claim 2, wherein theinteractive theme further comprises a game that is playable by the userwhile viewing the user interface.
 5. The system of claim 2, wherein theinteractive theme further comprises a screen saver that is displaysmoving content during an idle period.
 6. The system of claim 1, whereinthe processing unit based system further comprises a customerrelationship management system having a customer relationship managementsoftware application.
 7. A method for generating a user interface for abusiness software application, the method comprising: selecting a themethat generates a particular user interface for a business softwareapplication; and generating the user interface of the business softwareapplication.
 8. The method of claim 7, wherein the one or more themesfurther comprises an interactive theme with a moving portion of the userinterface.
 9. The method of claim 8, wherein the moving portion of theinteractive theme further comprises one of a moving boat, fallingsnowflakes and moving aliens.
 10. The method of claim 8, wherein theinteractive theme further comprises a game that is playable by the userwhile viewing the user interface.
 11. The method of claim 8, wherein theinteractive theme further comprises a screen saver that is displaysmoving content during an idle period.
 12. The method of claim 7, whereinthe processing unit based system further comprises a customerrelationship management system having a customer relationship managementsoftware application.